/**
 * 代理服务器配置示例
 * 
 * 这个文件展示了如何在生产环境中配置代理服务器
 * 可以根据需要修改配置参数
 */

module.exports = {
  // HTTP 服务器配置
  http: {
    // 监听端口
    port: process.env.HTTP_PORT || 8080,
    // 监听地址（0.0.0.0 表示监听所有网卡）
    host: process.env.HTTP_HOST || '0.0.0.0',
  },

  // HTTPS 服务器配置
  https: {
    // 是否启用 HTTPS
    enabled: process.env.ENABLE_HTTPS === 'true' || false,
    // 监听端口
    port: process.env.HTTPS_PORT || 8443,
    // 监听地址
    host: process.env.HTTPS_HOST || '0.0.0.0',
    // SSL 证书路径
    certPath: process.env.CERT_PATH || './cert.pem',
    // SSL 密钥路径
    keyPath: process.env.KEY_PATH || './key.pem',
  },

  // 代理配置
  proxy: {
    // 连接超时时间（毫秒）
    timeout: 30000,
    // 代理超时时间（毫秒）
    proxyTimeout: 30000,
    // 是否保留原始主机头
    changeOrigin: true,
    // 是否保留原始路径
    prependPath: true,
  },

  // 日志配置
  logging: {
    // 日志文件路径
    file: process.env.LOG_FILE || './proxy.log',
    // 日志级别：DEBUG, INFO, WARN, ERROR
    level: process.env.LOG_LEVEL || 'INFO',
    // 是否输出到控制台
    console: true,
    // 日志文件最大大小（字节）
    maxSize: 10 * 1024 * 1024, // 10MB
    // 日志文件最大数量
    maxFiles: 5,
  },

  // 安全配置
  security: {
    // IP 白名单（为空表示允许所有 IP）
    ipWhitelist: [],
    // IP 黑名单
    ipBlacklist: [],
    // 是否启用 IP 限制
    enableIpFilter: false,
    // 请求头大小限制（字节）
    maxHeaderSize: 16 * 1024, // 16KB
    // 请求体大小限制（字节）
    maxBodySize: 100 * 1024 * 1024, // 100MB
  },

  // 性能配置
  performance: {
    // 最大并发连接数
    maxConnections: 1000,
    // 连接保活超时时间（毫秒）
    keepAliveTimeout: 65000,
    // 是否启用 gzip 压缩
    enableGzip: true,
  },

  // 目标 URL 配置
  targets: {
    // 允许的目标域名（为空表示允许所有）
    allowedDomains: [],
    // 禁止的目标域名
    blockedDomains: [],
    // 是否启用域名过滤
    enableDomainFilter: false,
  },
};

